package cn.fl.preinsroute.transform;

import java.util.ArrayList;
import java.util.List;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.cmm.base.framework.utils.DecimalUtils;
import cn.fl.preinsroute.dto.PreRoutePrdInfoDTO;
import cn.fl.preinsroute.vo.PreRoutePrdInfoVO;
import cn.fl.preinsroute.vo.PreRoutePrpsFeeVO;
import org.apache.axis2.databinding.types.xsd.Decimal;


/**
 * @Description: 路由预筛选车辆信息 转换器
 * @Description: VO是客户端传递数据到服务端进行转换的数据 
 * @Description: VO转换数据变成DTO传递到服务端 
 * @Description: VO不能在服务端出现
 */
public class PreRoutePrdInfoVOTransform {


	/**
	 * DTO 转  VO
	 * @param dto
	 * @return PreRoutePrdInfoVO
	 */
	public static PreRoutePrdInfoVO toVO(PreRoutePrdInfoDTO dto) {
		PreRoutePrdInfoVO  vo = null;
		if (dto != null) {
			vo = new PreRoutePrdInfoVO();
			vo.setId(dto.getId());
			vo.setRouteId(dto.getRouteId());//路由ID
			vo.setPrdTypCd(dto.getPrdTypCd());//产品类型代码(CVM0001)
			vo.setBrId(dto.getBrId());//品牌ID
			vo.setBrCd(dto.getBrCd());//产品品牌(PRD0031 PRD0050 PRD0030 PRD0002)
			vo.setModelId(dto.getModelId());//车系ID
			vo.setModelNm(dto.getModelNm());//车系
			vo.setPrdId(dto.getPrdId());//用途ID
			vo.setPrdNm(dto.getPrdNm());//用途
			if (dto.getGuidePc() != null){
				vo.setGuidePc(DecimalUtils.convertFenToYuan(dto.getGuidePc()).longValue());//产品单价
			}
			vo.setPrdQty(dto.getPrdQty());//产品数量
			vo.setIsValid(dto.getIsValid());//是否有效
			vo.setIsDel(dto.getIsDel());//是否删除
			vo.setFlag(dto.isFlag()); // 主车 一体车标记
			if (dto.getMainTic() != null){
				vo.setMainTic(DecimalUtils.convertFenToYuan(dto.getMainTic()).longValue()); // 主票金额
			}
			if (dto.getReTic() != null){
				vo.setReTic(DecimalUtils.convertFenToYuan(dto.getReTic()).longValue()); // 补票金额
			}
			if (dto.getMediationFeeAmt() != null){
				vo.setMediationFeeAmt(DecimalUtils.convertFenToYuan(dto.getMediationFeeAmt()).longValue()); // 调节费
			}
			vo.setIsCheckOut(dto.getIsCheckOut()); // 是否已开票
			vo.setCheckOutDt(dto.getCheckOutDt()); // 开票时间
			vo.setResId(dto.getResId()); // 筛选结果id
			vo.setVehId(dto.getVehId()); // 车源id
			vo.setVehNo(dto.getVehNo()); // 车源编号
			vo.setVehMdl(dto.getVehMdl()); // 车辆型号
			vo.setSplRgnPrCd(dto.getSplRgnPrCd());
			if (dto.getVehAmt() != null){
				vo.setVehAmt(DecimalUtils.convertFenToYuan(dto.getVehAmt())); // 预估车价
			}
			if (dto.getContAmt() !=null){
				vo.setContAmt(DecimalUtils.convertFenToYuan(dto.getContAmt()));
			}
			vo.setRegDt(dto.getRegDt()); // 登记日期
			vo.setReleaseDt(dto.getReleaseDt()); // 出厂日期
			vo.setBankNoTypCd(dto.getBankNoTypCd()); // 经销商收款账户类型
			vo.setPreRoutePrpsFeeVOS(PreRoutePrpsFeeVOTransform.toVOList(dto.getPreRoutePrpsFeeDTOS())); // 费用项列表
			vo.setPreRouteInsResVO(PreRouteInsResVOTransform.toVO(dto.getPreRouteInsResDTO())); // 筛选结果
			vo.setCrtTm(dto.getCrtTm());//创建时间
			vo.setCrtUsrId(dto.getCrtUsrId());//创建人
			vo.setMdfTm(dto.getMdfTm());//修改时间
			vo.setMdfUsrId(dto.getMdfUsrId());//修改人
		}
		return vo;
	}

	/**
	 * VO 转 DTO
	 * @param vo PreRoutePrdInfoVO
	 * @return PreRoutePrdInfoDTO
	 */
	public static PreRoutePrdInfoDTO toDTO(PreRoutePrdInfoVO vo) {
		PreRoutePrdInfoDTO dto = null;
		if (vo != null) {
			dto = new PreRoutePrdInfoDTO();
			dto.setId(vo.getId());
			dto.setRouteId(vo.getRouteId());//路由ID
			dto.setPrdTypCd(vo.getPrdTypCd());//产品类型代码(CVM0001)
			dto.setBrId(vo.getBrId());//品牌ID
			dto.setBrCd(vo.getBrCd());//产品品牌(PRD0031 PRD0050 PRD0030 PRD0002)
			dto.setModelId(vo.getModelId());//车系ID
			dto.setModelNm(vo.getModelNm());//车系
			dto.setPrdId(vo.getPrdId());//用途ID
			dto.setPrdNm(vo.getPrdNm());//用途
			dto.setPrdQty(vo.getPrdQty());//产品数量
			dto.setIsValid(vo.getIsValid());//是否有效
			dto.setIsDel(vo.getIsDel());//是否删除
			dto.setFlag(vo.isFlag()); // 主车 一体车标记
			if(vo.getGuidePc() != null){
				dto.setGuidePc(DecimalUtils.convertYuanToFen(DecimalUtils.round(vo.getGuidePc().doubleValue(),2)));//产品单价
			}
			if(vo.getMainTic() != null){
				dto.setMainTic(DecimalUtils.convertYuanToFen(DecimalUtils.round(vo.getMainTic().doubleValue(),2))); // 主票金额
			}
			if (vo.getReTic() == null){
				dto.setReTic(0L); // 补票金额
			}else{
				dto.setReTic(DecimalUtils.convertYuanToFen(DecimalUtils.round(vo.getReTic().doubleValue(),2))); // 补票金额
			}
			if (vo.getMediationFeeAmt() == null){
				dto.setMediationFeeAmt(0L); // 调节费
			}else{
				dto.setMediationFeeAmt(DecimalUtils.convertYuanToFen(DecimalUtils.round(vo.getMediationFeeAmt().doubleValue(),2))); // 调节费
			}
			dto.setPreRoutePrpsFeeDTOS(PreRoutePrpsFeeVOTransform.toDTOList(vo.getPreRoutePrpsFeeVOS())); // 费用项
			dto.setPreRouteInsResDTO(PreRouteInsResVOTransform.toDTO(vo.getPreRouteInsResVO())); // 筛选结果
			dto.setIsCheckOut(vo.getIsCheckOut()); // 是否已开票
			dto.setCheckOutDt(vo.getCheckOutDt()); // 开票时间
			dto.setResId(vo.getResId()); // 路由结果id
			dto.setVehId(vo.getVehId()); // 车源id
			dto.setVehNo(vo.getVehNo()); // 车源编号
			dto.setVehMdl(vo.getVehMdl()); // 车辆型号
			dto.setSplRgnPrCd(vo.getSplRgnPrCd());
			if (vo.getVehAmt() != null){
				dto.setVehAmt(DecimalUtils.convertYuanToFen(DecimalUtils.round(vo.getVehAmt(),2))); // 预估车价
			}
			if (vo.getContAmt() != null){
				dto.setContAmt(DecimalUtils.convertYuanToFen(DecimalUtils.round(vo.getContAmt(),2))); // 合同额
			}
			dto.setRegDt(vo.getRegDt()); // 登记日期
			dto.setReleaseDt(vo.getReleaseDt()); // 出厂日期
			dto.setBankNoTypCd(vo.getBankNoTypCd()); // 经销商收款账户类型
			dto.setCrtTm(vo.getCrtTm());//创建时间
			dto.setCrtUsrId(vo.getCrtUsrId());//创建人
			dto.setMdfTm(vo.getMdfTm());//修改时间
			dto.setMdfUsrId(vo.getMdfUsrId());//修改人
		}
		return dto;
	}
	
	/**
	 * DTO集合 转 VO集合
	 * @param list
	 * @return List<PreRoutePrdInfoVO>
	 */
	public static List<PreRoutePrdInfoVO> toVOList(List<PreRoutePrdInfoDTO> list) {
		List<PreRoutePrdInfoVO>  voList = new ArrayList<PreRoutePrdInfoVO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (PreRoutePrdInfoDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}
	
	/**
	 * VO集合 转 DTO集合
	 * @param list List<PreRoutePrdInfoVO>
	 * @return List<PreRoutePrdInfoDTO>
	 */
	public static List<PreRoutePrdInfoDTO> toDTOList(List<PreRoutePrdInfoVO> list) {
		List<PreRoutePrdInfoDTO>  dtoList = new ArrayList<PreRoutePrdInfoDTO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (PreRoutePrdInfoVO vo : list) {
				dtoList.add(toDTO(vo));
			}
		}
		return dtoList;
	}
}
